As organizations have become more reliant on computers for performing day to day activities, so to has the reliance on networks and information technology (IT) infrastructures increased. It is well known that large organizations having offices and other facilities in different geographical locations utilize centralized computing systems connected locally over local area networks (LAN) and across the geographical areas through wide-area networks (WAN).
As these organizations grow, the amount of data to be processed and handled by the centralized computing centers also grows. As a result, the IT infrastructures used by many organizations have moved away from reliance on centralized computing power and towards more robust and efficient distributed systems. Distributed systems are decentralized computing systems that use more than one computer operating in parallel to handle large amounts of data. Concepts surrounding distributed systems are well known in the art and a complete discussion can be found in, e.g., “Distributed Systems: Principles and Paradigms”; Tanenbaum Andrew S.; Prentice Hall; Amsterdam, Netherlands; 2002.
While the benefits of a distributed approach are numerous and well understood, there has arisen significant practical challenges in managing such systems for optimizing efficiency and to avoid redundancies and/or under-utilized hardware. In particular, one challenge occurs due to the sprawl that can occur over time as applications and servers proliferate. Decentralized control and decision making around capacity, the provisioning of new applications and hardware, and the perception that the cost of adding server hardware is generally inexpensive, have created environments with far more processing capacity than is required by the organization.
When cost is considered on a server-by-server basis, the additional cost of having underutilized servers is often not deemed to be troubling. However, when multiple servers in a large computing environment are underutilized, having too many servers can become a burden. Moreover, the additional hardware requires separate maintenance considerations; separate upgrades and requires the incidental attention that should instead be optimized to be more cost effective for the organization. Heat production and power consumption can also be a concern. Even considering only the cost of having redundant licenses, removing even a modest number of servers from a large computing environment can save a significant amount of cost on a yearly basis.
As a result, organizations have become increasingly concerned with such redundancies and how they can best achieve consolidation of capacity to reduce operating costs. The cost-savings objective can be evaluated on the basis of consolidation strategies such as, but not limited to: virtualization strategies, operating system (OS) level stacking strategies, database consolidation strategies, application stacking strategies, physical consolidation strategies, and storage consolidation strategies.
Virtualization involves virtualizing a physical system as a separate guest OS instance on a host machine. This enables multiple virtualized systems to run on a single physical machine, e.g. a server. Examples of virtualization technologies include VMware™, Microsoft Virtual Server™, IBM LPAR™, Solaris Containers™, Zones™, etc.
OS-Level application stacking involves moving the applications and data from one or more systems to the consolidated system. This can effectively replace multiple operating system instances with a single OS instance, e.g. system A running application X and system B running application Y are moved onto system C running application Z such that system C runs applications X, Y and Z, and system A and B are no longer required. This strategy is applicable to all operation system types, e.g. Windows™, Linux™, Solaris™, AIX™, HP-UX™, etc.
Database stacking combines one or more database instances at the database server level, e.g. Oracle™, Microsoft SQL Server™, etc. Database stacking combines data within a database instance, namely at the table level. Application stacking combines one or more database instances at the application server level, e.g. J2EE™ application servers, Weblogic™, WebSphere™, JBoss™, etc.
Physical consolidation moves physical systems at the OS level to multi-system hardware platforms such as Blade Servers™, Dynamic System Domains™, etc. Storage consolidation centralizes system storage through storage technologies such as Storage Area Networks (SAN), Network Attached Storage (NAS), etc.
The consolidation strategies to employ and the systems and applications to be consolidated are to be considered taking into account the specific environment. Consolidation strategies should be chosen carefully to achieve the desired cost savings while maintaining or enhancing the functionality and reliability of the consolidated systems. Moreover, multiple strategies may often be required to achieve the full benefits of a consolidation initiative.
Complex systems configurations, diverse business requirements, dynamic workloads and the heterogeneous nature of distributed systems can cause incompatibilities between systems. These incompatibilities limit the combinations of systems that can be consolidated successfully. In enterprise computing environments, the virtually infinite number of possible consolidation permutations which include suboptimal and incompatibility system combinations make choosing appropriate consolidation solutions difficult, error-prone and time consuming.
It is therefore an object of the following to obviate or mitigate the above-described disadvantages.